package study

import (
	"encoding/json"
	"fmt"
	"github.com/spf13/viper"
	"time"
)

type ServerConfig struct {
	Port    int           `mapstructure:"port"`
	Timeout time.Duration `mapstructure:"timeout"`
}

type Config struct {
	Server ServerConfig `mapstructure:"server"`
}
type Response struct {
	Code    int    `json:"codeTest"`
	Message string `json:"messageTest"`
}

func TestTags() {
	resp := Response{Code: 200, Message: "OK"}
	data, _ := json.Marshal(resp)
	fmt.Println(string(data)) // {"code":200,"message":"OK"}
	var conf Config
	// 1. 设置 Viper 配置文件
	viper.SetConfigName("conf")    // 配置文件名（无扩展名）
	viper.AddConfigPath("./study") // 配置文件路径（当前目录）

	// 2. 读取配置文件
	if err := viper.ReadInConfig(); err != nil {
		panic(fmt.Errorf("配置文件读取失败: %w", err))
	}
	viper.Unmarshal(&conf) // 自动映射标签
	fmt.Println(conf)
	fmt.Println(conf.Server.Port) // 输出 8080
}
